//P1966 火柴排队
/*首先求出火柴在数列中第几大，然后贪心的匹配
例如，1 3 5 7 9
	  8 4 2 6 10
	  ->1-2,3-4,5-6,7-8,9-10
将a中第k大和b中第k大匹配。
由于移动a移动b没有区别，我们求a即可
首先离散化数组，AiBi表示aibi是第几大的
Ci表示第i大的数在A中的位置(即C[A[i]]=i)
定义D，使D[i]=C[B[i]]表示b中第i项需要移动到哪
有一个概念叫逆序对：a[x]>a[y]且x<y
该问题等价于求逆序对数，
因为每交换一次等价于减少一个逆序对
用树状数组维护
求出每一项之后比该项小的数量即可*/
int main()
{
	//离散化
	for(int i=1;i<=n;++i)
		A[i]=a[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=n;++i)
		A[i]=n+1-(lower_bound(a+1,a+n+1,A[i])-a);
		//需要减去a地址
	for(int i=1;i<=n;++i)
		B[i]=b[i];
	sort(b+1,b+n+1);
	for(int i=1;i<=n;++i)
		B[i]=n+1-(lower_bound(b+1,b+n+1,B[i])-b);
	for(int i=1;i<=n;++i)//求出a中第i大的数的下标
		C[A[i]]=i;
	for(int i=1;i<=n;++i)//求出b数组中第i个数应当移动到哪
		D[i]=C[B[i]];//第B[i]大的数的下标
	//树状数组维护
	for(int i=n;i>=1;--i)
		add(D[i],1),ans+=ask(D[i]);
	/*
	拿一个树状数组维护小于i的数字的个数
	有这个数字就给树状数组里面+1
	例如：4 2 5 1 3
	首先查询3，前缀和+0,“1”+0,“5”+2,“2”+1,“4”+3
	故结果为6
	 */


}
